package com.iplant.base.po.enums;

public enum ExceptionTypes implements BaseEnum {
	/**
	 * SCH
	 */
	Default(0, ""),
	/**
	 * 逻辑错误
	 */
	Logic(1, "逻辑错误"),
	/**
	 * 服务错误
	 */
	Service(2, "服务错误"),
	/**
	 * 数据层错误
	 */
	DBSQL(3, "数据层错误"),
	/**
	 * 参数错误
	 */
	Parameter(4, "参数错误"),
	/**
	 *系统异常
	 */
	Exception(5, "系统异常"),
	/**
	 * 无授权
	 */
	UnPower(6, "无授权"),
	/**
	 * 文件异常
	 */
	File(7, "文件异常"),

	/**
	 * 数据不存在
	 */
	NotFound(8, "数据不存在"),

	/**
	 * 数据已被锁定或使用
	 */
	DataLock(9, "数据已被锁定或使用"),

	/**
	 * 数据无效
	 */
	DataInvalid(10, "数据无效"),

	/**
	 * 数据重复
	 */
	Duplication(11, "数据重复"),
	
	/**
	 * 用户名或密码错误
	 */
	UserValidationFailed(12, "用户名或密码错误");

	private int value;
	private String label;
	private String remark = "";

	ExceptionTypes(int value, String label) {
		this.value = value;
		this.label = label;
	}

	ExceptionTypes(int value, String label, String remark) {
		this.value = value;
		this.label = label;
		this.remark = remark;
	}

	/**
	 * 通过 value 的数值获取枚举实例
	 */
	public static ExceptionTypes getEnumType(int val) {
		for (ExceptionTypes type : ExceptionTypes.values()) {
			if (type.getValue() == val) {
				return type;
			}
		}
		return Default;
	}

	public static String getLabel(int val) {
		for (ExceptionTypes type : ExceptionTypes.values()) {
			if (type.getValue() == val) {
				return type.getLabel();
			}
		}
		return Default.getLabel();
	}

	@Override
	public int getValue() {
		return value;
	}

	@Override
	public void setValue(int value) {
		this.value = value;
	}

	@Override
	public String getLabel() {
		return label;
	}

	@Override
	public void setLabel(String label) {
		this.label = label;
	}

	@Override
	public String getRemark() {
		return remark;
	}

	@Override
	public void setRemark(String remark) {
		this.remark = remark;
	}
}
